package controllers

import (
	"ShopSupplierApi/models"
	"ShopSupplierApi/services"
	"ShopSupplierApi/utils"
)

//ExpressController 快递
type ExpressController struct {
	LcfController
}

// @Title 获取地区数据
// @Success 200 {object} models.Region
// @router /regionInfo [get]
func (c *ExpressController) RegionInfo() {
	c.JSONSuccess(services.RegionInfo())
}

// @Title 获取快递公司列表
// @Param	page	body	models.Page	true	"分页数据信息"
// @Success 200
// @router /expressCorpList [post]
func (c *ExpressController) ExpressCorpList() {
	err := c.ParseBodyToPage()
	if err != nil {
		return
	}
	c.JSONPageData(services.ExpressServ.ExpressCorpList(c.Data["page"].(*models.Page)))
}

// @Title 供应商快递列表
// @Param	sid	query	uint64	true	"供应商ID"
// @Param	page	body	models.Page	true	"分页数据信息"
// @Success 200
// @router /expressList [post]
func (c *ExpressController) ExpressList() {
	sid, err := c.GetInt64("sid")
	if err == nil {
		err := c.ParseBodyToPage()
		if err != nil {
			return
		}
		c.JSONPageData(services.ExpressServ.ExpressList(uint64(sid), c.Data["page"].(*models.Page)))
	} else {
		c.JSONFailedError(utils.NotFoundSid)
	}
}

// @Title 增加快递信息
// @Param	sid	query	uint64	true	"供应商ID"
// @Param		express	body	models.Express	true	"快递信息"
// @Success 200
// @router /addExpress [post]
func (c *ExpressController) AddExpress() {
	sid, err := c.GetInt64("sid")
	if err == nil {
		var ep models.Express
		err := c.JSONParseBody(&ep)
		if err != nil {
			return
		}
		ep.SupplierID = uint64(sid)
		c.JSONSuccess(services.ExpressServ.AddExpress(&ep))
	} else {
		c.JSONFailedError(utils.NotFoundSid)
	}
}

// @Title 增加快递公司
// @Param sid	query	uint64	true	"供应商ID"
// @Param	name	query	string	true	"物流公司名称"
// @Param	corpCode	query	string	true	"物理公式代码"
// @Param	website	query	string	true	"物流公司官网"
// @Param	requestURL	query	string true	"快递查询网址"
// @Param	orderNum	query	uint	false	"排序"
// @Success 200
// @router /addExpressCorp [post]
func (c *ExpressController) AddExpressCorp() {
	sid, err := c.GetInt64("sid")
	if err == nil {
		if sid != 0 {
			c.JSONFailedError(utils.NoPower)
			return
		}
		args := map[string][2]string{}
		args["name"] = [2]string{c.GetString("name", "物流公司名称")}
		args["corpCode"] = [2]string{c.GetString("corpCode", "物理公式代码")}
		args["website"] = [2]string{c.GetString("website"), "物流公司官网"}
		args["requestURL"] = [2]string{c.GetString("requestURL"), "快递查询网址"}
		for k, v := range args {
			if v[0] == "" {
				c.JSONFailedError(utils.LoseParam(k + "[" + v[1] + "]"))
				return
			}
		}
		orderNum, _ := c.GetInt("orderNum", 100)
		c.JSONSuccess(services.ExpressServ.AddExpressCorp(args["name"][0], args["corpCode"][0], args["website"][0], args["requestURL"][0], uint(orderNum)))

	} else {
		c.JSONFailedError(utils.NotFoundSid)
	}
}

// @Title 修改快递公司
// @Param sid	query	uint64	true	"供应商ID"
// @Param	corpID	query	uint	true	"快递公司ID"
// @Param	name	query	string	true	"物流公司名称"
// @Param	corpCode	query	string	true	"物理公式代码"
// @Param	website	query	string	true	"物流公司官网"
// @Param	requestURL	query	string true	"快递查询网址"
// @Param	orderNum	query	uint	false	"排序"
// @Success 200
// @router /updateExpressCorp [post]
func (c *ExpressController) UpdateExpressCorp() {
	sid, err := c.GetInt64("sid")
	if err == nil {
		if sid != 0 {
			c.JSONFailedError(utils.NoPower)
			return
		}
		corpID, err := c.GetInt("corpID")
		if err != nil {
			c.JSONFailedError(utils.LoseParam("corpID[快递公司ID]"))
			return
		}
		args := map[string][2]string{}
		args["name"] = [2]string{c.GetString("name", "物流公司名称")}
		args["corpCode"] = [2]string{c.GetString("corpCode", "物理公式代码")}
		args["website"] = [2]string{c.GetString("website"), "物流公司官网"}
		args["requestURL"] = [2]string{c.GetString("requestURL"), "快递查询网址"}
		for k, v := range args {
			if v[0] == "" {
				c.JSONFailedError(utils.LoseParam(k + "[" + v[1] + "]"))
				return
			}
		}
		orderNum, _ := c.GetInt("orderNum", 100)
		c.JSONSuccess(services.ExpressServ.UpdateExpressCorp(uint(corpID), args["name"][0],
			args["corpCode"][0], args["website"][0], args["requestURL"][0], uint(orderNum)))

	} else {
		c.JSONFailedError(utils.NotFoundSid)
	}
}
